home *** CD-ROM | disk | FTP | other *** search
- /*_ float.h Thu Dec 6 1990 */
- /* Implementation limits */
-
- #ifndef __FLOAT_H
- #define __FLOAT_H 1
-
- #if __cplusplus
- extern "C" {
- #endif
-
- #ifdef __STDC__
- #define __CDECL
- #define __STDCALL
- #else
- #define __CDECL __cdecl
- #define __STDCALL __stdcall
- #endif
-
- #if __OS2__ && __INTSIZE == 4
- #define __CLIB __STDCALL
- #else
- #define __CLIB __CDECL
- #endif
-
- #define DBL_DIG 15
- #define DBL_EPSILON 0x1p-52 /* 2.2204460492503131e-16 */
- #define DBL_MANT_DIG 53
- #define DBL_MAX_10_EXP 308
- #define DBL_MAX_EXP 1024
- #define DBL_MIN_10_EXP -307
- #define DBL_MIN_EXP -1021
-
- #if 1
- #if __SC__ < 0x220
- #define DBL_MAX 1.7976931348623157e+308
- #else
- #define DBL_MAX 0x1.FFFFFFFFFFFFFp1023
- #endif
- #define DBL_MIN 2.2250738585072014e-308
- #define FLT_MAX 3.402823466e+38F
- #define FLT_MIN 1.175494351e-38F
- #else
- extern double __CDECL DBL_MAX;
- extern double __CDECL DBL_MIN;
- extern float __CDECL FLT_MAX;
- extern float __CDECL FLT_MIN;
- #endif
-
- #define FLT_DIG 6
- #define FLT_EPSILON 1.19209290e-7f
- #define FLT_MANT_DIG 24
- #define FLT_MAX_10_EXP 38
- #define FLT_MAX_EXP 128
- #define FLT_MIN_10_EXP -37
- #define FLT_MIN_EXP -125
- #define FLT_RADIX 2
-
- extern int __CLIB __flt_rounds(void);
- #define FLT_ROUNDS (__flt_rounds())
-
- #define LDBL_DIG DBL_DIG
- #define LDBL_EPSILON DBL_EPSILON
- #define LDBL_MANT_DIG DBL_MANT_DIG
- #define LDBL_MAX DBL_MAX
- #define LDBL_MAX_10_EXP DBL_MAX_10_EXP
- #define LDBL_MAX_EXP DBL_MAX_EXP
- #define LDBL_MIN DBL_MIN
- #define LDBL_MIN_10_EXP DBL_MIN_10_EXP
- #define LDBL_MIN_EXP DBL_MIN_EXP
-
- #ifndef __STDC__
-
- /* Non-ANSI functions to support the 8087 */
-
- extern int __cdecl _8087;
- unsigned __CLIB _status87(void);
- unsigned __CLIB _clear87(void);
- unsigned __CLIB _control87(unsigned, unsigned);
- void __CLIB _fpreset(void);
-
- #define _MCW_EM 0x003f /* interrupt Exception Masks */
- #define _EM_INVALID 0x0001
- #define _EM_DENORMAL 0x0002
- #define _EM_ZERODIVIDE 0x0004
- #define _EM_OVERFLOW 0x0008
- #define _EM_UNDERFLOW 0x0010
- #define _EM_INEXACT 0x0020
-
- #define _MCW_IC 0x1000 /* Infinity Control */
- #define _IC_AFFINE 0x1000
- #define _IC_PROJECTIVE 0x0000
-
- #define _MCW_RC 0x0c00 /* Rounding Control */
- #define _RC_CHOP 0x0c00
- #define _RC_UP 0x0800
- #define _RC_DOWN 0x0400
- #define _RC_NEAR 0x0000
-
- #define _MCW_PC 0x0300 /* Precision Control */
- #define _PC_24 0x0000
- #define _PC_53 0x0200
- #define _PC_64 0x0300
-
- #define _CW_DEFAULT (_RC_NEAR | _IC_AFFINE | _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT | _PC_64)
-
- /* Compatibility macros */
- #define MCW_PC _MCW_PC
- #define CW_DEFAULT _CW_DEFAULT
-
- #endif
-
- #ifdef __FPCE__
- #define DECIMAL_DIG 17
- #endif
-
- #if __cplusplus
- }
- #endif
-
- #endif /* __FLOAT_H */
-